// globalThis.a = 1;

// function fn() {
//     return {
//         a: 100,
//         b: function () {
//             console.log('b',this.a);
//         },
//         c: () => {
//             console.log('c',this.a); //1
//         },
//         d: function () {
//             return function () {
//                 console.log('d',this.a); //1
//             }
//         }
//     }
// }

// const fn0 = fn();
// fn0.b()
// fn0.c()
// fn0.d()()

// const context = {
//     a: 100
// }

// const fn1 = fn.call(context);
// fn1.b()
// fn1.c()
// fn1.d()()
// fn1.d().call(context)


// var name = 'window';

// const person = {
//     name: 'person',
//     foo1: function () {
//         console.log(this.name); //person
//     },
//     foo2: () => {
//         console.log(this.name); //window
//     },
//     foo3: function () {
//         return function () {
//             console.log(this.name); //window
//         }
//     }
// }

// const person2 = {
//     name: 'person2'
// }

// person.foo1()
// person.foo1.call(person2)

// person.foo2()
// person.foo2.call(person2)

// person.foo3()()
// person.foo3().call(person2)
// person.foo3.call(person2)()

let length = 10;


function fnNew() {
    return this.length + 1
}

const obj = {
    length: 5,
    test1: function () {
        return fnNew()
    },
}

console.log(obj.test1()); //11